package com.vincent.template.service.logic;

import com.vincent.template.dto.sys.bind.BindAuthGroupAuthDto;
import com.vincent.template.dto.sys.bind.BindAuthUriDto;
import com.vincent.template.dto.sys.bind.BindRoleAuthDto;
import com.vincent.template.dto.sys.bind.BindRoleAuthGroupDto;
import com.vincent.template.dto.sys.bind.BindUserGroupRoleDto;
import com.vincent.template.dto.sys.bind.BindUserGroupUserDto;
import com.vincent.template.dto.sys.bind.BindUserRoleDto;

/**
 * @author Vincent Wang
 * @date 2021/3/25 21:45
 */
public interface BindService {

    /**
     * 绑定/解绑 用户组和用户
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindUserGroupUser(BindUserGroupUserDto dto, boolean unbind);

    /**
     * 绑定/解绑 用户和角色
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindUserRole(BindUserRoleDto dto, boolean unbind);

    /**
     * 绑定/解绑 用户组和角色
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindUserGroupRole(BindUserGroupRoleDto dto, boolean unbind);

    /**
     * 绑定/解绑 角色和权限
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindRoleAuth(BindRoleAuthDto dto, boolean unbind);

    /**
     * 绑定/解绑 角色和权限组
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindRoleAuthGroup(BindRoleAuthGroupDto dto, boolean unbind);

    /**
     * 绑定/解绑 权限组和权限
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindAuthGroupAuth(BindAuthGroupAuthDto dto, boolean unbind);

    /**
     * 绑定/解绑 权限和uri
     * @param dto
     * @param unbind
     * @return
     */
    boolean bindAuthUri(BindAuthUriDto dto, boolean unbind);

}
